package com.neuedu.weishi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.neuedu.weishi.entity.Member;
import com.neuedu.weishi.vo.ResponseData;


/**
 * Author lu
 * Date   2025-08-26 09:11:00
 */
public interface IMemberService extends IService<Member> {
    /**
     * 会员注册
     * 1.邮箱格式校验
     * 2.密码格式校验
     * 3.邮箱验证码校验
     * 4.注册
     * 5.返回结果
     *
     * @param email    邮箱
     * @param password 密码
     * @param code     邮箱验证码
     * @return
     */
    ResponseData register(String email, String password, String code);

    /**
     * 发送注册验证码
     *
     * @param email 邮箱
     * @return
     */
    ResponseData sendRegisterCode(String email);

    /**
     * 会员登录
     * 1.验证邮箱、密码是否填写
     * 2.判断是否重复登录
     * 3.根据邮箱和密码(加密后)查询会员
     * 4.判断用户状态
     * 5.签名
     * 6.将用户数据保存到redis中
     * 7.返回结果(签名)
     *
     * @param email
     * @param password
     * @return
     */
    ResponseData login(String email, String password);

    /**
     * 发送找回密码验证码
     * 1.验证邮箱是否填写
     * 2.判断邮箱是否已注册
     * 3.发送验证码
     *
     * @param email
     * @return
     */
    ResponseData sendFindPwdCode(String email);

    /**
     * 重置密码
     * 1.检查邮箱、验证码、新密码是否填写
     * 2.检查验证码是否正确
     * 3.重置密码
     * 4.返回结果
     *
     * @param email  邮箱
     * @param code   验证码
     * @param newPwd 新密码
     * @return
     */
    ResponseData resetPassword(String email, String code, String newPwd);

    /**
     * 检查令牌
     * @param token
     * @return
     */
    boolean checkToken(String token);

    /**
     * 更新密码
     * 1.检查会员用户ID是否存在
     * 2.检查旧密码、新密码、新密码确认是否填写
     * 3.检查旧密码、新密码格式
     * 4.检查旧密码是否正确
     * 5.检查旧密码与新密码是否相同
     * 6.检查新密码和新密码确认是否一致
     * 7.更新密码
     * 8.返回结果
     * @param token   令牌
     * @param oldPwd  旧密码
     * @param newPwd  新密码
     * @param newConfirmPwd 新密码确认
     * @return
     */
    ResponseData updatePassword(String token,String oldPwd,String newPwd,String newConfirmPwd);

}